let express = require('express');
let path = require('path');
let cookieParser = require('cookie-parser');
let logger = require('morgan');
let session = require('express-session');

let app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));

app.use(cookieParser());
app.use(session({
  secret: 'cklsndlvnslnfvsdlncnvs', // 对 sessionId 的签名,防止篡改,越复杂越好
  name: 'myApp', // 在浏览器端生成的 cookie 的名字
  cookie: { // cookie 配置
    // httpOnly: true,
    maxAge: 1000 * 10 // cookie 过期时间设置
  },
  rolling: true, // 每次请求时强行设置 cookie ,就会重置过期时间
}))

app.use(express.static(path.join(__dirname, 'public')));

// 路由拦截
app.use(function (req, res, next) {
  console.log('当前访问路由:', req.url);

  if (req.url != '/login.no' && req.url != '/login') {
    if (req.session.sign) { // 有权限
      next();
    } else { // 无权限
      res.redirect('/login.no'); // 重定向
    }
  } else {
    next();
  }
});

// 路由 - 访问页面的 
app.get('/login.no', function (req, res) {
  res.render('login');
});
app.get('/home.no', function (req, res) {
  res.render('home');
});
app.get('/about.no', function (req, res) {
  res.send('个人中心');
});

// 路由 - 接受请求的
app.post('/login', function (req, res) {
  if (req.body.username == 'admin') {
    req.session.sign = true;

    res.json({
      code: '200',
      msg: '登陆成功'
    });
  } else {
    res.json({
      code: '1001',
      msg: '账号错误'
    });
  }
});
app.get('/users/get', function (req, res) {
  res.send('这里是个人的信息,没有登陆的看不到');
});

app.use(function (err, req, res, next) {
  console.log('服务器：500', err);

  res.send(err)
});

app.listen(3030, function () {
  console.log('the server is run at port 3030');
});
